package com.xbongbong.paas.service;

import com.xbongbong.paas.pojo.dto.ColumnSetAddDTO;
import com.xbongbong.paas.pojo.dto.ColumnSetListDTO;
import com.xbongbong.paas.pojo.dto.DelColumnSetAddDTO;
import com.xbongbong.paas.pojo.dto.DelColumnSetListDTO;
import com.xbongbong.paas.pojo.dto.OfficPreviewUrlSaveDTO;
import com.xbongbong.paas.pojo.dto.UpdateMobileFocusModeDTO;
import com.xbongbong.paas.pojo.dto.UpdateMobileModeDTO;
import com.xbongbong.paas.pojo.dto.UserConfigAddDTO;
import com.xbongbong.paas.pojo.vo.ColumnSetAddVO;
import com.xbongbong.paas.pojo.vo.ColumnSetListVO;
import com.xbongbong.paas.pojo.vo.DelColumnSetAddVO;
import com.xbongbong.paas.pojo.vo.DelColumnSetListVO;
import com.xbongbong.paas.pojo.vo.MobileFocusModeGetVO;
import com.xbongbong.paas.pojo.vo.MobileMenuModeSetGetVO;
import com.xbongbong.paas.pojo.vo.MobileModeGetVO;
import com.xbongbong.paas.pojo.vo.UpdateMobileFocusModeVO;
import com.xbongbong.paas.pojo.vo.UpdateMobileModeVO;
import com.xbongbong.paas.pojo.vo.UserConfigAddVO;
import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.paas.toolbox.wrap.BaseDTO;
import com.xbongbong.pro.config.pojo.dto.UserConfigAddBatchDTO;
import com.xbongbong.pro.config.pojo.vo.UserConfigAddBatchVO;
import com.xbongbong.sys.domain.entity.UserConfigEntity;

/**
 * @author: wufeng
 * @date: 2018/9/11 20:37
 * @desrcption: 用户配置表接口
 */
public interface UserConfigService {
    /**
     * 更新或者添加配置
     * @param userConfigAddDTO
     * @return
     * @throws XbbException
     */
    UserConfigAddVO save(UserConfigAddDTO userConfigAddDTO) throws XbbException;

    /**
     * 批量保存和更新
     * @author wufeng
     * @date 2019/1/10 9:48
     * @param userConfigAddBatchDTO
     * @descption
     * @return com.xbongbong.pro.config.pojo.vo.UserConfigAddBatchVO
     * @throws XbbException
     */
    UserConfigAddBatchVO saveBatch(UserConfigAddBatchDTO userConfigAddBatchDTO) throws XbbException;



    /**
     * 列表设置增加
     * @param columnSetAddDTO
     * @return
     * @throws XbbException
     */
    ColumnSetAddVO columnSetAdd(ColumnSetAddDTO columnSetAddDTO) throws XbbException;

    /**
     * 列表设置增加
     * @param columnSetListDTO
     * @return
     * @throws XbbException
     */
    ColumnSetListVO columnSetList(ColumnSetListDTO columnSetListDTO) throws XbbException;

    String getColumnInvisibleConfigPrefix(Integer businessType, Integer subBusinessType, Long groupId);

    String getColumnSortConfigPrefix(Integer businessType, Integer subBusinessType, Long groupId);

    String getColumnFixedConfigPrefix(Integer businessType, Integer subBusinessType, Long groupId);

    String getDefaultSortConfigPrefix(Integer businessType, Integer subBusinessType, Long groupId);

    /**
     * 回收站列表设置增加
     * @param delColumnSetAddDTO
     * @return
     * @throws XbbException
     */
    DelColumnSetAddVO delColumnSetAdd(DelColumnSetAddDTO delColumnSetAddDTO) throws XbbException;

    /**
     * 回收站获取列表设置
     * @param delColumnSetListDTO
     * @return
     * @throws XbbException
     */
    DelColumnSetListVO delColumnSetList(DelColumnSetListDTO delColumnSetListDTO) throws XbbException;

    /**
     * 判断用户的移动端首页是否是专注模式
     * @return
     * @throws XbbException
     */
    boolean isFocus(BaseDTO baseDTO) throws XbbException;

    /**
     * 更改用户的移动端首页的模式
     * @return
     * @throws XbbException
     */
    UpdateMobileModeVO updateMobileMode(UpdateMobileModeDTO updateMobileModeDTO) throws XbbException;

    /**
     * 用户获取移动端首页模式
     * @param baseDTO
     * @return
     * @throws XbbException
     */
    MobileModeGetVO getMobileMode(BaseDTO baseDTO) throws XbbException;

    /**
     * 更改用户的移动端首页专注模式下是展示工作还是仪表盘，0展示工作，1展示仪表盘
     * @return
     * @throws XbbException
     */
    UpdateMobileFocusModeVO updateMobileFocusMode(UpdateMobileFocusModeDTO updateMobileFocusModeDTO) throws XbbException;

    /**
     * 用户获取用户的移动端首页专注模式下是展示工作还是仪表盘
     * @param baseDTO
     * @return
     * @throws XbbException
     */
    MobileFocusModeGetVO getMobileFocusMode(BaseDTO baseDTO) throws XbbException;

    MobileMenuModeSetGetVO getMobileMenuModeSet(BaseDTO baseDTO) throws XbbException;


    /**
     * 获取offic文件预览url
     * date: 2022/7/7 3:46 下午
     * @author yingjf
     * @param corpid:
     * @param userId:
     */
    String getOfficPreviewUrl(String corpid,String userId)throws XbbException;
    /**
     * 保存offic文件预览url
     * date: 2022/7/7 4:05 下午
     * @author yingjf
     * @param officPreviewUrlSaveDTO:入参
     */
    void saveOfficPreviewUrl(OfficPreviewUrlSaveDTO officPreviewUrlSaveDTO)throws XbbException;


    /**
     * 保存产品管理详情-仓库/库存-仅展示启用规格设置
     * @param userConfigAddDTO
     * @return
     */
    UserConfigAddVO openOnlyShowSpecifitions(UserConfigAddDTO userConfigAddDTO) throws XbbException;

    UserConfigEntity getOnlyShowSpecifitions(String corpid,String userId);
}
